<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;
use think\Request;
<<<<<<< HEAD
=======
<<<<<<< HEAD
>>>>>>> a40bd7c37eef93aca4b7ae3126fd10da65b4232b
use think\Session;
use app\admin\model\Role as RoleModel;

class Role extends Admin
{
    public function index()
    {
        $list = db('role')->select();
        // var_dump($list); exit;
        $arr = array();
        //遍历添加上 权限信息
        foreach($list as $v){
            $nodes = db('role_node')->where(array('rid'=>array('eq',$v['id'])))->select();
            $node = array();
            foreach($nodes as $value){
                $node[] = db('node')->where(array('id'=>array('eq',$value['nid'])))->column('name');
            }
            $v['node'] = $node;
            $arr[] = $v;
        }

        return view('admin@role/index', [
            'list' => $arr
<<<<<<< HEAD
=======
=======

class Role extends Admin
{
    /**
     * 部门 职位列表查询 并渲染页面
     */
    public function roleAll()
    {
        //查询
    	$list = db('role_test')->select();

        // var_dump($list);
         $arr = array(); //声明一个空数组

        //遍历职位信息
        foreach($list as $v){
            $node_ids = db('role_node_test')->field('nid')->where(array('rid'=>array('eq',$v['id'])))->select();

            // var_dump($node_ids);
            //定义空数组
            $nodes = array();

            //遍历角色的权限信息
            foreach($node_ids as $value){
                $roles = db('node_test')->field(`nodename`)->where('id='.$value['nid'])->select();
                // var_dump($roles);
                if (!empty($roles)) {
                $v['nodes'] .= ' '.$roles['0']['nodename']; //将新得到权限信息放置到$v中
                }
            }
            $arr[] = $v;
        }
        // var_dump($arr);die;
        //渲染页面
        return view('admin@role/roleAll',[
            'arr'=> $arr
>>>>>>> 2042d0c0398cdc6116be32c9963026791e40783c
>>>>>>> a40bd7c37eef93aca4b7ae3126fd10da65b4232b
        ]);
    }

    /**
<<<<<<< HEAD
=======
<<<<<<< HEAD
>>>>>>> a40bd7c37eef93aca4b7ae3126fd10da65b4232b
     * 渲染添加角色页面
     */
    public function add()
    {
        return view('admin@role/add');
    }

    /**
     * 执行添加角色
     */
    public function doAdd()
    {
        $p = input('post.');
        // dump($p); exit;
        $role = new RoleModel;
        $role->data($p);
        $result = $role->allowField(true)->save();
        if ($result > 0) {
            return $this->success('添加成功!', url('admin/role/index'));
        } else {
            return $this->error('添加失败!');
        }
    }

    /**
     * 渲染编辑角色页面
     */
    public function edit()
    {
        // echo '1111';
        $id = input('param.');
        // var_dump($id);
        $role = db('role')->field(['id','name', 'remark'])->find($id);
        // var_dump($role);exit;
        return view('admin@role/edit', [
            'role' => $role
        ]);
    }

    /**
     * 执行编辑角色
    */
    public function doEdit()
    {
        // echo '111'; 
        $data = input('param.');
        $id = $data['id'];
        // var_dump($data);
        $result = Db::table('dj_role')->where('id', $id)->update($data);
        // var_dump($result); die;
        if ($result > 0) {
            return $this->success('更新成功!', url('admin/role/index'));
        } else {
            return $this->error('更新失败!');
        }
    }





    /**
     * 渲染增加角色页面
     */
    public function showNode()
    {
        // 用户id
        $id = input('param.');
        // var_dump($id); 
        // 查找该角色信息
        $role = db('role')->where(array('id'=>array('eq',$id['id'])))->find();
        //查找所有的节点
        $nodes = db('node')->select();
        //获取该角色的权限
        $ro_node = db('role_node')->where(array('rid'=>array('eq',$role['id'])))->select();
        // var_dump($ro_node); exit;
        $ro_nodes = array();
        //遍历重组数组
        foreach($ro_node as $v){
            $ro_nodes[] = $v['nid'];
        }

        return view('admin@role/shownode',[
            'role' => $role,
            'nodes' => $nodes,
            'ro_node' => $ro_nodes
        ]);
    }



    /**
     * 保存用户所属角色
     */
    public function saveNode()
    {

        $post = input('post.');
        // var_dump($post);
        //判读必须选择一个角色
        if(empty($post['node'])){
            $this->error("请选择一个节点！");
        }

        $rid = $post['rid'];
        // var_dump($rid);exit;
        //删除该  角色的 所有信息--避免重复添加
        db('role_node')->where(array('rid'=>array('eq',$rid)))->delete();

        //循环添加
        foreach($post['node'] as $v){
            $data['nid'] = $v;
            $data['rid'] = $rid;
            //执行添加
            db('role_node')->data($data)->insert();
        }
        $this->success("添加成功！",url('admin/role/index'));

    }


    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        // 是否为Ajax请求
        if (!Request::instance()->isAjax()) {
            $this->error('你是不是迷路了?', '/');
        }

        // 查询指定用户信息 显示查询
        $row = db('role')->find($id);
<<<<<<< HEAD
=======

>>>>>>> a40bd7c37eef93aca4b7ae3126fd10da65b4232b
        if ($row === null) {
            $info['status'] = false;
            $info['title'] = '查无数据';
            $info['datas'] = '查无数据,请您重试!';
        } else {
            $info['status'] = true;
            $info['data'] = $row;
        }
        return json($info);
    }


    /**
     * 保存更新的资源ajax
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {   
        $info = $request->put();
        $id = $info['id'];
        $data = [
            'name'          => $info['name'],
            'remark'         => $info['remark'],
        ];
        $result = db('role')->where('id', $id)->update($data);
        // $result = db('role')->where('id',$id)->find($id);
         if ($result > 0) {
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = 'ID为' .$id. '的角色修改成功!';
        }else{
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = '修改失败';
        }
        return json($info);
        
        // if ($result > 0) {
        //     return $this->success('更新成功!', url('admin/Role/index'));
        // } else {
        //     return $this->error('更新失败!');
        // }
        
    }
     
    

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {   
        $result = db('role')->delete($id);
        // var_dump($result);
        if ($result > 0) {
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = 'ID为'.$id.'的角色删除成功!';
        }else{
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = '删除失败';
        }


        // echo json_encode($result);
        return json($info);
    }
}
<<<<<<< HEAD
=======
=======
     * 渲染添加部门 职位页面
     */
    public function roleAdd()
    {
        return view('admin@role/roleAdd');
    }

    /**
     * 执行职位添加
     * @param  Request $request 
     */
    public function roleDoAdd(Request $request)
    {   
        $data = $request->post();
        // var_dump($data);die;
        Db::table('role_test')->insert($data);
        $this->success('添加成功!', url('admin/role/roleAll'));
    }

    /**
     * 渲染职位权限分配页面
     * @param  [type] $id [当前职位ID]
     */
    public function roleNodeList($id)
    {   
        //查询权限信息
        $list = db('node_test')->field(['id','nodename'])->select();
        
        //查询职位信息
        $data = db('role_test')->where('id='.$id)->find();

        //查询当前角色的权限信息
        $arr = array();
        $mynodes= db('role_node_test')->field('nid')->where('rid='.$id)->select();
        for ($i=0; $i < count($mynodes) ; $i++) { 
            $arr[] = $mynodes[$i]['nid'];
        }

        //渲染权限分配页面
        return view('admin@role/roleNodeList',[
            'data'=> $data,
            'list'=>$list,
            'arr'=>$arr
        ]);
    }

    /**
     * 执行角色分配 返回用户列表页
     */
    public function savenode(Request $request)
    {
            $data = $request->post();
            //判读必须选择一个权限
            if(empty($data['nid'])){
                $this->error("请分配一个权限！");
            }
            //清除用户所有的角色信息，避免重复添加
            db('role_node_test')->where('rid='.$data['rid'])->delete();

            //执行添加
            foreach ($data['nid'] as $v) {
                $arr = array();
                $arr['nid'] = $v;
                $arr['rid'] = $data['rid'];
               db('role_node_test')->insert($arr);
            }

            $this->success("权限分配成功",url('admin/role/roleAll'));
        }



} 
>>>>>>> 2042d0c0398cdc6116be32c9963026791e40783c
>>>>>>> a40bd7c37eef93aca4b7ae3126fd10da65b4232b
